package com.wskeee.ec.interfaces
{
	import flash.geom.Rectangle;

	public interface IEComponent
	{
		//========================= 更新 ========================
		/**
		 * 马上更新 
		 * validate()
		 */
		function validateNow(manual:Boolean = false):void;
		/**
		 * 生效组件  分别执行以下函数
		 * validateProperty()
		 * validateSize()
		 * validateDisplayList()
		 */
		function validate():void;
		
		/**
		 * 生效组件 属性 
		 * 
		 */
		function validateProperties():void;
		
		/**
		 * 生效组件大小 
		 * 
		 */
		function validateSize():void;
		
		/**
		 * 生效显示对象，当 属性改变时，
		 * 调用该函数更新显示 
		 * 
		 */	
		function validateDisplayList():void;
		//========================= end =========================
		
		//========================= act =========================
		/**
		 * 直接设置组件大小 ，与通过设置width、height不同的是，
		 * setActualSize 不会改变explicitWidth、explicitHeight
		 * @param w
		 * @param h
		 * @param sendEvent 发出resize事件，默认为true
		 * 
		 */
		function setActualSize(w:Number,h:Number,sendEvent:Boolean = true):void;
		
		/**
		 * 获取组件完整大小，与getBounds不同，组件在设置了scrollRect后getBounds获取到的高宽与scrollRect一致
		 * 而getFullBounds获取与scrollRect无关  
		 * @return 
		 * 
		 */
		function getFullBounds():Rectangle;
		
		/**
		 * 删除所有子对象 
		 * 
		 */
		function removeAllChildren():void;
		
		/**
		 * 销毁组件 
		 * 
		 */
		function destory():void;
		
		/**
		 * 启用/禁用 交互操作 
		 * @param bo
		 * 
		 */
		function set enabled(bo:Boolean):void;
		function get enabled():Boolean;
		
		/**
		 * 重写 DisplayObject.width 
		 * @param value
		 * 
		 */
		function set width(value:Number):void;
		function get width():Number;
		
		/**
		 * 重写 DisplayObject.height  
		 * @param value
		 * 
		 */
		function set height(value:Number):void;
		function get height():Number;
		
		/**
		 * 设置/获取 组件 宽度 精确值 
		 * @param value
		 * 
		 */
		function set explicitWidth(value:Number):void;
		function get explicitWidth():Number;
		
		/**
		 * 设置/获取 组件 高度 精确值  
		 * @param vlaue
		 * 
		 */
		function set explicitHeight(vlaue:Number):void;
		function get explicitHeight():Number;
		
		/**
		 * 设置/获取 组件 宽度 测量值 
		 * @param vlaue
		 * 
		 */
		function set measureWidth(vlaue:Number):void;
		function get measureWidth():Number;
		
		/**
		 * 设置/获取 组件 高度 测量值 
		 * @param vlaue
		 * 
		 */
		function set measureHeight(vlaue:Number):void;
		function get measureHeight():Number;
		//========================= end =========================
	}
}